package com.itheima.array;

import java.util.Scanner;

/*
    1.键盘录入6个int类型的数据存入数组arr中
    2.将arr数组中的内容反转
    3.将反转后的数组角标为奇数的相互交换1和3换,3和5换,以此类推
    4.最后将数组最后一个角标为奇数的元素,和数组中第一个角标为奇数的元素交换
    5.打印最终的数组
    6.如:用户输入{1,2,3,4,5,6},输出{6,5,4,1,2,3}
 */
public class WorkArray03 {
    public static void main(String[] args) {
        //1.键盘录入6个int类型的数据存入数组arr中
        Scanner sc = new Scanner(System.in);
        int[] arr = new int[6];
        for (int i = 0; i < arr.length; i++) {
            System.out.println("请输入第" + (i + 1) + "个整数:");
            arr[i] = sc.nextInt();
        }
        arr = swap(arr);
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
        System.out.println();
        arr = change(arr);
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
        System.out.println();
        arr = change1(arr);
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
        System.out.println();
        print1(arr);
        System.out.println();
        print2(arr);
    }

    //2.将数组内容反转
    public static int[] swap(int[] arr) {
        int end = arr.length - 1;
        int temp;
        for (int i = 0; i < arr.length / 2; i++) {
            temp = arr[i];
            arr[i] = arr[end];
            arr[end] = temp;
            end--;
        }
        return arr;
    }

    //3.将反转后的数组角标为奇数的相互交换1和3换,3和5换,以此类推
    public static int[] change(int[] arr) {
        int temp;
        for (int i = 1; i < arr.length - 2; i = i + 2) {
            temp = arr[i];
            arr[i] = arr[i + 2];
            arr[i + 2] = temp;
        }
        return arr;
    }

    //4.最后将数组最后一个角标为奇数的元素,和数组中第一个角标为奇数的元素交换
    public static int[] change1(int[] arr) {
        int temp;
        int end;
        if (arr.length % 2 == 1) {
            end = arr.length;
        } else {
            end = arr.length - 1;
        }
        temp = arr[1];
        arr[1] = arr[end];
        arr[end] = temp;
        return arr;
    }

    //5.额外1:将数组只出现一次的数字打印出并打印一共有几个这样的数
    public static void print1(int[] arr) {
        int count1 = 0;
        for (int i = 0; i < arr.length; i++) {
            int count = 0;
            for (int j = 0; j < arr.length; j++) {
                if (arr[i] == arr[j]) {
                    count++;
                }
            }
            if (count == 1) {
                System.out.println(arr[i] + "只出现了一次");
                count1++;
            }
        }
        System.out.println("单个出现的数一共有" + count1 + "个");
    }

    //6.额外2:将数组中重复出现的数字打印出并打印出现的次数
    public static void print2(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            int count1 = 0;
            for (int j = 0; j < arr.length; j++) {
                if (arr[i] == arr[j]) {
                    count1++;
                }
            }
            if (count1 > 1) {
                System.out.println(arr[i] + "出现了" + count1 + "次");
            }
        }
    }
}


//未掌握知识点,如何判断重复出现的是第一个数,并只输出该数
